#pragma once

class ColorRGBA
{
	public:
		ColorRGBA( void ) : R_(1), G_(1), B_(1), A_(1) { }

		ColorRGBA( float R, float G, float B, float A ) : R_(R), G_(G), B_(B), A_(A) { }

		virtual float getR( ) const {
			return R_;
		}

		virtual float getG( ) const {
			return G_;
		}

		virtual float getB( ) const {
			return B_;
		}

        virtual float getA( ) const {
            return A_;
        }

        virtual ColorRGBA& setR( float R ) {
			R_ = R;
			return *this;
		}

		virtual ColorRGBA& setG( float G ) {
			G_ = G;
			return *this;
		}

        virtual ColorRGBA& setB( float B ) {
            B_ = B;
            return *this;
        }

        virtual ColorRGBA& setA( float A ) {
            A_ = A;
            return *this;
        }

		virtual bool operator==( const ColorRGBA& color ) const {
			return color.getR( ) == R_ && color.getG( ) == G_ &&
                   color.getB( ) == B_ && color.getA( ) == A_; 
		}

		virtual bool operator!=( const ColorRGBA& color ) const {
			return !( color == *this );
		}

	private:
		float R_;
		float G_;
        float B_;
        float A_;
};

